<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <title>Software Overview - phoneME Feature Software (MR4)</title>
  <link rel="stylesheet" href="./style/document.css" type="text/css"> 
</head>

<body>

<!-- Header -->
<table class="full-width">
  <tr> 
    <td align="center" class=sun-darkblue> 
      <h1>Software Overview</h1>        
      <h2>phoneME&#153; Feature Software (MR4)</h2>        
      <h4>April 2009</h4>
    </td>
  </tr>
  <tr> 
    <td class=sun-lightblue>&nbsp;</td>
  </tr>
</table>
<p>

<a href="../index.html">Home</a> | <a href="./release-notes.html">Release Notes</a> |
<a href="./index_feature.html"> Getting Started Guide</a>

<p>
phoneME&#153; Feature software is an optimized Java Platform, Micro Edition
(Java ME) stack, distributed freely through the java.net open source community.
<!-- phoneME&#153; Feature software is a high-performance, Mobile Service Architecture 
ready platform, --> It is based on an optimized implementation of the Connected 
Limited Device Configuration (CLDC) and Mobile Information Device Profile (MIDP) 
software stack, which includes support for many Java Specification Requests (JSRs). 

<p>
phoneME Feature software is a flexible, high quality implementation for developers 
who port MIDP and associated technologies to mobile devices. It is also useful to 
application developers who want to work with the very latest Java ME technologies, 
even before these technologies are ported to real devices.
</p>

<h2 class="Head1">Architecture</h2>

<p>
phoneME Feature software consists of three fundamental layers, as shown in the 
following diagram.
</p>

<img src="./images/stack_layers.jpg"/>

<p>
phoneME Feature software is shown in blue. It is made up of three primary pieces:

<p>
<ul>
<li>MIDP/CLDC - The fundamental platform stack that makes up the core of the 
phoneME Feature software. CLDC defines the base set of application programming 
interfaces and a virtual machine for resource-constrained devices. MIDP provides an 
application environment and a wide range of application services. CLDC and MIDP are
defined through the Java Community Process (JCP&#153;) by JSRs 139 and 118, 
respectively. 

<p>
<li>Optional Package JSRs - Optional functionality that extends the fundamental 
platform stack. For example, Multimedia API (JSRs 135 and 234), Bluetooth (JSR 82), 
and the Mobile Sensor API (JSR 256) are all optional packages included in the 
phoneME Feature software. 

<p>
<li>Abstraction layer - A set of functionality that allows all JSRs to talk to 
MIDP/CLDC through a common set of interfaces. 
</ul>

<p>
Applications (MIDlets) run on top of the phoneME Feature software.  When 
phoneME Feature software runs multiple MIDlets, it uses a single OS process. 
Therefore, a single instance of Java virtual machine can execute several applications 
simultaneously, providing each with a separate runtime environment. All running 
applications are isolated so that from the application's point of view, it looks as 
if each application is executed in its own virtual machine.


<p>
The JavaCall&#153; API distills the platform requirements of the entire phoneME Feature
software platform to a single set of functions that must be ported. All porting is done 
at the same layer, and the JavaCall functions are consistently named and well documented.

<p>
Information on porting phoneME Feature software is in the 
<a href="http://java.sun.com/javame/reference/docs/sjwc-2.2/pdf-html/html/porting/index.html">
<i>Sun Java Wireless Client Software Porting Guide</I</a>.

<p>
JSR 239 Java Binding for the OpenGL&reg; ES API is a notable exception. It
binds to a standardized API and no additional JavaCall layer is needed.
JSR 239 provides a direct binding to the OpenGL ES implementation.  

<h1 class="Head1">Getting Started</h1>

<p>
Here is a road map for getting started with a port to your own device. Your
actual steps are likely to vary, but this list provides a general idea of
where you're going and how to get there.
</p>

<ol>
<li>
Begin by building one of the reference implementations of phoneME Feature software.  
This acquaints you with the build system, gets the fundamental parts of your tool 
chain set up, and allows you to begin exploring the structure of the source code. The 
<a href="./index_feature.html">Getting Started Guide</a> and the 
<a href="http://java.sun.com/javame/reference/docs/sjwc-2.2/pdf-html/html/build/index.html">
<i>Sun Java Wireless Client Software Build Guide</i></a> are both designed to get you up 
and running with a reference port in a short amount of time.
</li>
<li>
Next, get the tools you need to build for your own device. Most often the key to 
success is a cross-compiler for the processor and operating system that runs your 
device.
</li>
<li>
Copy <code>stubs</code> and use the JavaCall porting layer to create the basic 
infrastructure for building your device. 
</li>
<li>
Fill in the stubbed functions. 
</li>
</ol>
<p>

<a href="../index.html">Home</a> | <a href="./release-notes.html">Release Notes</a> |
<a href="./index_feature.html"> Getting Started Guide</a>
<p>

<hr class="pHr">

<p class="copyright"><a href="./style/copyright.html">
Copyright</a> &#169; 2009 Sun Microsystems, Inc. All rights reserved. 
</p>

</body>
</html>

